package com.bw.comtroler;

import com.alibaba.fastjson.JSONArray;
import com.alibaba.fastjson.JSONObject;
import com.bw.bean.DateBean;
import com.bw.service.DataBeanServiceImpl;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.RestController;

import java.util.List;



/**
 * @author admin
 * @date 2025年09月19日 15:38
 */
@RestController
public class DataBeanController {
    @Autowired
    private DataBeanServiceImpl dataBeanService;  // 注入服务层实现类
    @RequestMapping("/s1")
    public JSONObject select1() {
        JSONObject result = new JSONObject();
        result.put("status", 0);
        result.put("msg", "");

        JSONObject data = new JSONObject();
        result.put("data", data);

        // 构建图表基础结构
        JSONArray categories = new JSONArray();  // X轴分类
        JSONArray series = new JSONArray();      // 数据系列集合
        data.put("categories", categories);
        data.put("series", series);

        // 创建单一系列
        JSONObject seriesRow = new JSONObject();
        seriesRow.put("name", "品牌名称");         // 系列名称
        JSONArray dataArray = new JSONArray();    // 数值数组
        seriesRow.put("data", dataArray);         // 挂载数值数组
        series.add(seriesRow);                   // 加入系列集合

        // 填充数据
        List<DateBean> dateBeans = dataBeanService.select1();
        for (DateBean bean : dateBeans) {
            categories.add(bean.getName());      // 添加分类标签
            dataArray.add(bean.getCta());         // 添加数值
        }
        return result;
    }


    @RequestMapping("/s2")
    public JSONObject select2() {
        JSONObject result = new JSONObject();
        result.put("status", 0);
        result.put("msg", "");

        JSONArray data = new JSONArray();  // 直接使用数组作为核心数据
        result.put("data", data);          // 挂载到根对象

        List<DateBean> dateBeans = dataBeanService.select2();
        for (DateBean bean : dateBeans) {
            JSONObject item = new JSONObject();
            item.put("name", bean.getAges());  // 数据项名称
            item.put("value", bean.getCtb());// 数据项数值
            item.put("url","http://www.baidu.com");
            data.add(item);                    // 加入数组
        }
        return result;
    }

    /**
     * 接口路径：/s3
     * 功能：查询地图分布数据
     * 返回数据结构：
     * {
     *   "status": 0,             // 状态码（0表示成功）
     *   "msg": "",               // 消息提示
     *   "data": {
     *     "mapData": [           // 地图数据数组
     *       {"name": "区域A", "value": 100},
     *       {"name": "区域B", "value": 200}
     *     ],
     *     "valueName": "总成交易额" // 数值字段名称
     *   }
     * }
     */
    @RequestMapping("/s3")
    public JSONObject select3(){
        JSONObject result = new JSONObject();  // 创建响应根对象
        result.put("status", 0);               // 设置成功状态码
        result.put("msg", "");                 // 空消息

        JSONObject data = new JSONObject();    // 核心数据容器
        result.put("data", data);              // 挂载到根对象

        JSONArray mapData = new JSONArray();   // 地图数据数组
        data.put("mapData", mapData);          // 挂载到核心数据
        data.put("valueName", "总成交易额");    // 固定数值字段名

        // 从数据库获取数据并构建响应
        List<DateBean> dateBeans = dataBeanService.select3();
        for (DateBean bean : dateBeans) {
            JSONObject row = new JSONObject();
            row.put("name", bean.getName());   // 区域名称
            row.put("value", bean.getCta());   // 交易额数值
            mapData.add(row);                  // 加入数据数组
        }
        return result;
    }


    @RequestMapping("/s4")
    public JSONObject select4() {
        JSONObject result = new JSONObject();
        result.put("status", 0);
        result.put("msg", "");

        JSONObject data = new JSONObject();
        result.put("data", data);

        // 构建表结构
        JSONArray columns = new JSONArray();  // 列定义
        JSONArray rows = new JSONArray();     // 数据行
        data.put("columns", columns);
        data.put("rows", rows);

        // 定义表头列
        addColumn(columns, "index", "排名");
        addColumn(columns, "product", "品牌");
        addColumn(columns, "value", "性别");
        addColumn(columns, "pm", "销售额");

        // 填充表格数据
        List<DateBean> dateBeans = dataBeanService.select4();
        for (DateBean bean : dateBeans) {
            JSONObject row = new JSONObject();
            row.put("index", bean.getId());      // 排名
            row.put("product", bean.getName());  // 品牌
            row.put("value", bean.getGender());     // 性别
            row.put("pm", bean.getCtb());        // 销售额
            rows.add(row);
        }
        return result;
    }

    // 辅助方法：添加表头列定义
    private void addColumn(JSONArray columns, String id, String name) {
        JSONObject col = new JSONObject();
        col.put("id", id);      // 字段ID（前端绑定键）
        col.put("name", name);  // 列显示名称
        columns.add(col);
    }
}